//   ( )
procedure SortArray(var RqArray  : array of integer;
                        SortCmd  : Char;
                        RqReport : TMemo);
var TopInd : integer;
    Ind    : integer;   //  
    Buf    : integer;   //    
begin
  if Length(RqArray) > 1
  then begin
    //     
    //  
    TopInd := High(RqArray);
    repeat
       Ind := Low(RqArray);
       //   Low(RqArray)  
       //    
       //   .
       repeat
          Buf := RqArray[Ind];
          if (Ind + 1) <= TopInd
          then begin
            case UpCase(SortCmd) of
            'U': begin
                   if (RqArray[Ind + 1] > Buf)
                   then begin
                     //    
                     RqArray[Ind] := RqArray[Ind + 1];
                     //    
                     RqArray[Ind + 1] := Buf;
                   end;
                 end;
            'D': begin
                   if (RqArray[Ind + 1] < Buf)
                   then begin
                     //    
                     RqArray[Ind] := RqArray[Ind + 1];
                     //    
                     RqArray[Ind + 1] := Buf;
                   end;
                end;
            end; // of case
          end;
          Ind := Ind + 1;
        until (Ind >= TopInd );
        //       TopInd.
        //   TopInd    .
        TopInd := TopInd -1;
    until (TopInd <= Low(RqArray));
  end;
  // 
  RqReport.Lines.Add('');
  case UpCase(SortCmd) of
  'U': RqReport.Lines.Add('  ');
  'D': RqReport.Lines.Add('  ');
  end;
  ShowArray( RqArray, RqReport);
end; {of procedure}